A significant portion of software is delivered to customers through services. This typically means the software is written or customized specifically for each customer's needs. The advantage of this approach may be that customers get the functionality they desire because the software is customized to their requirements. The downside may be that customized software typically takes a great deal of time to develop and may be costly to maintain.
Many businesses have a need to decrease their software deployment and maintenance costs. One approach to enable this may be to deploy “out-of-the-box” (OOTB) software as is, without customization. This eliminates the cost of custom development and also reduces the software support costs. Software written to a specific customer costs more to maintain as opposed to software sold “as is” to multiple customers and across whom much of the support cost can be shared. The down side of this approach may be that some customers have very specific requirements pertaining to their business processes that may not be met by a software package OOTB. Accordingly, a substantial problem with conventional means of delivering custom software can be that it is too costly both in its development and maintenance since the software is written specifically for a single customer.
Another substantial problem with conventional means of delivering custom software can be that the focus is primarily on delivering strictly OOTB software, as is, with no customization. Such an approach typically provides a fast delivery time, but it is often too limited and inflexible in offering extensions to the software's built in business processes.
Another substantial problem with delivering custom software, whether customized or OOTB, can be over-configuration of the software. Generally, as to customized or OOTB software, all allowable configuration capability may be available for the user to set up or specify. However, not all configuration aspects of a software product are equal. A fair amount of time can be spent on configuration that may be trivial or offer little business return for the investment.
Conventional approaches to address these problems and to speed up the deployment process have utilized automation and configuration front-ends to reduce time and costs such as described in U.S. Pat. No. 7,543,269. However, this approach does not focus on ensuring that the configuration aspects that are exposed are those that embody best business practices for the software being delivered.
There has also been work done on simplifying the configuration process to ensure the entered data is valid and does not conflict, such as the approach described in United States Patent Application Publication No. 2007/0267484 A1. This approach reduces the customizations that are exposed based on what options apply given earlier configuration inputs. This is an important aspect of efficient configuration, but the approach does not take into context the full deployment process or the initial need to constrain configuration options based on business needs and best practices.
There remains a unresolved need for a system and method of modifying a software configuration with user selected software configuration modifications and building an installer capable of installing the modified software configuration to provide an updated software configuration for the user.